<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        // promise 承诺
        // es6新增的   解决异步问题

        //  是一个对象
        //     promise是一个容器，里面存放的是异步的程序，也就是说将来才会知道结果(好的，不好的)
        //           承诺可能兑现   也可能没有兑现

        //   resolve  成功则调用
        //   reject   失败才会调用


        // promise的状态
        //    promiseState  进行中  pending
        //    5s之后               fulfilled(成功的)  /  rejected(失败的结果)

        // promise的结果
        //    promiseResult  undefined
        //    5s之后          随机数


        // promise的特点
        //   这个状态一经确定，就不会再改变

        //   没有调用then方法的时候，失败的结果会直接内部报错



        const p = new Promise(function(resolve , reject){
            // 写一个异步的程序   产生100以内的随机数   单号就中奖，双号就不中奖
            setTimeout(() => {
                // 
                const n = parseInt(Math.random() * 100) ;
                if(n % 2) {
                    // 成功的结果
                    resolve(n) ;
                } else {
                    // 失败的结果
                    reject(n) ;
                }
            } , 1000)
        }) ;

        console.log(p);



        // 对象的方法
        //    then(fn1 , fn2)   fn1成功的时候就会调用   fn2失败的时候才会调用    只会调用一个 


        p.then(
            function(data) {
                console.log('我中奖了，号码是:' + data);
            } ,
            function(err) {
                console.log('很可惜，错失一个亿，失败的原因是抽中了:' + err);
            }
        )


       

        


    </script>
    
</body>
</html>